package com.irdstudio.efp.esb.api.util;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.text.NumberFormat;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 需求编号:2019D08--
 * 问题编号:
 * 开发人员: caoxin
 * 创建日期:2019/9/27
 * 功能描述:
 * 修改日期:2019/9/27
 * 修改描述:
 */
public class CheckUtils {
    private static Logger logger = LoggerFactory.getLogger(CheckUtils.class);
    /**
     * 两位小数校验
     * @param value
     * @return
     */
    public static boolean twoDecimalCheck(String value) {
        try {
            if (value == null || value.equals("")) {
                return true;
            }
            Pattern pattern = Pattern.compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,2})?$");
            Matcher match = pattern.matcher(value);
            if (match.matches() == true) {
                return true;
            }
        } catch (Exception e) {
            logger.error(e.getMessage());
        }
        return false;
    }

    /**
     * 四位小数校验
     * @param value
     * @return
     */
    public static boolean fourDecimalCheck(String value) {
        try {
            if (value == null || value.equals("")) {
                return true;
            }
            Pattern pattern = Pattern.compile("^(([1-9]{1}\\d*)|([0]{1}))(\\.(\\d){0,4})?$");
            Matcher match = pattern.matcher(value);
            if (match.matches() == true) {
                return true;
            }
        } catch (Exception e) {
            logger.error(e.getMessage());
        }
        return false;
    }
    /**
     * 需求编号:2019D08--
     * 问题编号:
     * 开发人员: caoxin
     * 创建日期:2019/10/12
     * 功能描述:YYYY-MM-dd
     * 修改日期:2019/10/12
     * 修改描述:
     */
    public static boolean formatDateCheck(String value){
        try {
            if (value == null || value.equals("")) {
                return true;
            }
            Pattern pattern = Pattern.compile("^(([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29)$");
            Matcher match = pattern.matcher(value);
            if (match.matches() == true) {
                return true;
            }
        } catch (Exception e) {
            logger.error(e.getMessage());
        }
        return false;
    }
    /**
     * 需求编号:2019D08--
     * 问题编号:
     * 开发人员: caoxin
     * 创建日期:2019/10/12
     * 功能描述:YYYY-MM-DD HH:MM:SS
     * 修改日期:2019/10/12
     * 修改描述:
     */
    public static boolean formatDateTimeCheck(String value){
        try {
            if (value == null || value.equals("")) {
                return true;
            }
            Pattern pattern = Pattern.compile("^((([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8]))))|((([0-9]{2})(0[48]|[2468][048]|[13579][26])|((0[48]|[2468][048]|[3579][26])00))-02-29))\\s([0-1][0-9]|2[0-3]):([0-5][0-9]):([0-5][0-9])$");
            Matcher match = pattern.matcher(value);
            if (match.matches() == true) {
                return true;
            }
        } catch (Exception e) {
            logger.error(e.getMessage());
        }
        return false;
    }

    /**
     * 取消科学计数法
     */
    public static String formatDouble(double d,int fractionDigits){
        NumberFormat nf = NumberFormat.getInstance();
        nf.setGroupingUsed(false);
        nf.setMaximumFractionDigits(fractionDigits);
        return nf.format(d);
    }

}
